preinitialize known formats
authorØyvind Kolås <ok@src.gnome.org>
Tue, 6 Jun 2006 21:07:08 +0000 (21:07 +0000)
committerØyvind Kolås <ok@src.gnome.org>
Tue, 6 Jun 2006 21:07:08 +0000 (21:07 +0000)
ChangeLog
babl/base/Makefile.am
babl/base/babl-base.c
babl/base/formats.c [new file with mode: 0644]

index 69ef11d06bdca3d46f79700f13dac224f8f6ce40..118cdc862a231783b9e4361903a0606babcf33b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-06-06  Øyvind Kolås  <pippin@gimp.org>
+
+       Register all the formats that the gggl based conversions use in
+       babl-base. This allows a string based short hand vocabulary of format
+       names that can be expected to exist.
+
+       * babl/base/Makefile.am: added formats.c
+       * babl/base/babl-base.c: (babl_base_init): initialize formats.
+
 2006-06-06  Øyvind Kolås  <pippin@gimp.org>
 
        Added conversions based on gggl that assume no gamma in their
index 56f43186351022ca2e858f8953b0e84ce3da0b72..adbb139dacbc8ffe4e619cc1f568d573608e5ac6 100644 (file)
@@ -4,6 +4,7 @@ h_sources =                     \
 
 c_sources =                    \
        babl-base.c             \
+       formats.c               \
        type-float.c            \
        type-u8.c               \
        type-u16.c              \
index 38cf6d66b0403954171996ed4dfb1f4a1dc7402c..20d8cc2b2077a0f1170df2a388614fe8069aec7f 100644 (file)
@@ -19,6 +19,7 @@
 
 extern int babl_hmpf_on_name_lookups;
 
+void babl_formats_init (void);
 static void types  (void);
 static void models (void);
 
@@ -29,6 +30,7 @@ babl_base_init (void)
 
   types ();
   models ();
+  babl_formats_init ();
 
   babl_hmpf_on_name_lookups --;
 }
diff --git a/babl/base/formats.c b/babl/base/formats.c
new file mode 100644 (file)
index 0000000..6573398
--- /dev/null
@@ -0,0 +1,338 @@
+/* babl - dynamically extendable universal pixel conversion library.
+ * Copyright (C) 2006, Øyvind Kolås.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "babl.h"
+#include "babl-ids.h"
+
+void
+babl_formats_init (void)
+{
+  babl_format_new (
+      babl_model_id (BABL_RGBA_GAMMA_2_2),
+      babl_type_id (BABL_DOUBLE),
+      babl_component_id (BABL_RED_GAMMA_2_2),
+      babl_component_id (BABL_GREEN_GAMMA_2_2),
+      babl_component_id (BABL_BLUE_GAMMA_2_2),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_GAMMA_2_2),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_RED_GAMMA_2_2),
+      babl_component_id (BABL_GREEN_GAMMA_2_2),
+      babl_component_id (BABL_BLUE_GAMMA_2_2),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_GAMMA_2_2),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_RED_GAMMA_2_2),
+      babl_component_id (BABL_GREEN_GAMMA_2_2),
+      babl_component_id (BABL_BLUE_GAMMA_2_2),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_GAMMA_2_2),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_RED_GAMMA_2_2),
+      babl_component_id (BABL_GREEN_GAMMA_2_2),
+      babl_component_id (BABL_BLUE_GAMMA_2_2),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_GAMMA_2_2_PREMULTIPLIED),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_RED_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_GREEN_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_BLUE_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_GAMMA_2_2_PREMULTIPLIED),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_RED_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_GREEN_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_BLUE_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_GAMMA_2_2_PREMULTIPLIED),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_RED_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_GREEN_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_BLUE_GAMMA_2_2_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGB_GAMMA_2_2),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_RED_GAMMA_2_2),
+      babl_component_id (BABL_GREEN_GAMMA_2_2),
+      babl_component_id (BABL_BLUE_GAMMA_2_2),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGB_GAMMA_2_2),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_RED_GAMMA_2_2),
+      babl_component_id (BABL_GREEN_GAMMA_2_2),
+      babl_component_id (BABL_BLUE_GAMMA_2_2),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGB_GAMMA_2_2),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_RED_GAMMA_2_2),
+      babl_component_id (BABL_GREEN_GAMMA_2_2),
+      babl_component_id (BABL_BLUE_GAMMA_2_2),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA_PREMULTIPLIED),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMA_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_LUMA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA_PREMULTIPLIED),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_LUMA_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_LUMA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_LUMA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA_PREMULTIPLIED),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_LUMA_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_GAMMA_2_2),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_LUMA),
+      NULL);
+  babl_format_new (
+      "name", "Y'CbCr u8",
+      babl_model_id (BABL_YCBCR),
+      babl_type_id (BABL_U8_LUMA),
+      babl_component_id (BABL_LUMA),
+      babl_type_id (BABL_U8_CHROMA),
+      babl_component_id (BABL_CB),
+      babl_component_id (BABL_CR),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_YCBCR),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMA),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_CB),
+      babl_component_id (BABL_CR),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_YCBCR),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMA),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_CB),
+      babl_component_id (BABL_CR),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_RED),
+      babl_component_id (BABL_GREEN),
+      babl_component_id (BABL_BLUE),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_RED),
+      babl_component_id (BABL_GREEN),
+      babl_component_id (BABL_BLUE),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA),
+      babl_type_id (BABL_DOUBLE),
+      babl_component_id (BABL_RED),
+      babl_component_id (BABL_GREEN),
+      babl_component_id (BABL_BLUE),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_RED),
+      babl_component_id (BABL_GREEN),
+      babl_component_id (BABL_BLUE),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_PREMULTIPLIED),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_RED_MUL_ALPHA),
+      babl_component_id (BABL_GREEN_MUL_ALPHA),
+      babl_component_id (BABL_BLUE_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_PREMULTIPLIED),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_RED_MUL_ALPHA),
+      babl_component_id (BABL_GREEN_MUL_ALPHA),
+      babl_component_id (BABL_BLUE_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGBA_PREMULTIPLIED),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_RED_MUL_ALPHA),
+      babl_component_id (BABL_GREEN_MUL_ALPHA),
+      babl_component_id (BABL_BLUE_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGB),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_RED),
+      babl_component_id (BABL_GREEN),
+      babl_component_id (BABL_BLUE),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGB),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_RED),
+      babl_component_id (BABL_GREEN),
+      babl_component_id (BABL_BLUE),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_RGB),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_RED),
+      babl_component_id (BABL_GREEN),
+      babl_component_id (BABL_BLUE),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_ALPHA),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMINANCE),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_ALPHA_PREMULTIPLIED),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMINANCE_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMINANCE),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_ALPHA),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_LUMINANCE),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_ALPHA_PREMULTIPLIED),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_LUMINANCE_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY),
+      babl_type_id (BABL_U16),
+      babl_component_id (BABL_LUMINANCE),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_ALPHA),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_LUMINANCE),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY_ALPHA_PREMULTIPLIED),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_LUMINANCE_MUL_ALPHA),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_GRAY),
+      babl_type_id (BABL_U8),
+      babl_component_id (BABL_LUMINANCE),
+      NULL);
+
+  /* overriding name, since the generated name would be wrong due
+   * to differing types
+   */
+  babl_format_new (
+      "name", "Y'CbCr u8",
+      babl_model_id (BABL_YCBCR),
+      babl_type_id (BABL_U8_LUMA),
+      babl_component_id (BABL_LUMA),
+      babl_type_id (BABL_U8_CHROMA),
+      babl_component_id (BABL_CB),
+      babl_component_id (BABL_CR),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_YCBCR),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMA),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_CB),
+      babl_component_id (BABL_CR),
+      NULL);
+  babl_format_new (
+      babl_model_id (BABL_YCBCR_ALPHA),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_LUMA),
+      babl_type_id (BABL_FLOAT),
+      babl_component_id (BABL_CB),
+      babl_component_id (BABL_CR),
+      babl_component_id (BABL_ALPHA),
+      NULL);
+}